Non-volatile memory devices, such as universal serial bus (USB) flash memory devices and removable memory cards, have allowed for increased portability of data and software applications. Host devices, such as cameras or mobile phones, may include a memory device interface that enables the host device to access one or more memory devices, such a USB flash memory device or a removable memory card. A host device may perform an enumeration process to determine identifiers for each device coupled to the memory device interface.
A conventional enumeration process may include receiving a first identifier from a first memory device, receiving a second identifier from a second memory device, comparing the second identifier to the first identifier, and requesting a new identifier from the second memory device if the first and second identifiers are the same. Often, however, devices are configured by a device manufacturer to select a common initial identifier value and to increment a previously selected identifier value by a pre-set amount each time the host requests a new identifier from the memory device. To illustrate, each device may initially select the identifier value “1,” followed by “2,” “3,” and so on until an unused identifier value is found. In this case, a fifth enumerated device would select four unusable identifier values prior to selecting an identifier value that does not duplicate identifiers of the previously enumerated devices. Enumerating two devices may require three sequential identifier transmissions from the device to the host, enumerating three devices may require six identifier transmissions, and enumerating five devices may require fifteen identifier transmissions. Hence, there is a need for a more efficient method of selecting a device identifier at a memory device interface.